1. Field of the Invention
The present invention relates generally to computer software. More particularly, the present invention relates to methods and apparatus for providing a mechanism for managing input and output.
2. Description of the Related Art
The ability to debug a system is important during the development of the system as well as to ensure proper maintenance of the system upon completion of system development. In order to facilitate the debugging process, a variety of debugging tools are available. Typically, a debugging tool is loaded prior to testing or prior to running a system. When a system error occurs, the software developer or engineer may then access the debugging tool to identify and correct the error.
All system components may require debugging at various instances in time. For instance, even services provided by the kernel, the essential center of a computer operating system that provides basic services for all other parts of the operating system, may require debugging due to system errors. Typically, a kernel includes an interrupt handler that handles all requests or completed I/O operations that compete for the kernel's services, a scheduler that determines which programs share the kernel's processing time in what order, and a supervisor that actually gives use of the computer to each process when it is scheduled. A kernel may also include a manager of the operating system's address spaces in memory or storage, sharing these among all components and other users of the kernel's services.
It is particularly important that the functionality of both input and output services be preserved during the debugging of any system such as the operating system kernel. As one example, it is often desirable to write the contents of memory to a file for subsequent analysis. As another example, it is imperative that the ability to perform keyboard input be fully preserved in order to enter debugging commands.
Although I/O services are required to debug a system successfully, when an error occurs in a system such as the kernel, it is likely that the I/O operations handled by the kernel are also non-functional. In view of the above, it would therefore be desirable if a debugging tool independent of the system being debugged were developed. Moreover, it would be beneficial if a mechanism for ensuring I/O functionality during the debugging process could be provided.